declare const RegExp: {
    //RegExp构造函数创建实例
    new (pattern: string, flags?: string): RegExp;
  
    //RegExp构造函数
    (pattern: string, flags?: string): RegExp;
  
    //RegExp的第一个组内容属性
    $1: any;
  } 
  
  class Tool {
  
    formatDate(value: any, format: string): string {
  
        //value: 日期对象 || 日期字符串
        //format: 格式 ==> 比如 yyyy-MM-dd hh:mm:ss
        //月日时分秒不足十补零, 比如 M 不需要补零, 如果是MM, 并且月份不足十，则需要补零
      
        if ((<any>Object).prototype.toString.call(value) !== "[object Date]") {
          value = new Date(value);
        }
      
        //获取年份
        let yearReg: RegExp = /(y+)/;
      
        if (yearReg.test(format)) {
      
          //获取匹配组的内容
          let yearContent: string = RegExp.$1;
      
      
          //获取年份
          let year: string = value.getFullYear().toString();
        
      
          let yearText: string = year.slice(4 - yearContent.length);
      
          format = format.replace(yearContent, yearText);
      
        }
      
        let dateObject: any = {
          M: value.getMonth() + 1,
          d: value.getDate(),
          h: value.getHours(),
          m: value.getMinutes(),
          s: value.getSeconds()
        };
      
        //遍历dateObject替换format
        for (let key in dateObject) {
      
          //动态创建正则表达式
          let reg: RegExp = new RegExp(`(${key}+)`);
      
      
          if (reg.test(format)) {
      
      
            //获取匹配组的内容
            let content: string = RegExp.$1;
      
            format = format.replace(content, content.length === 1 ? dateObject[key] : dateObject[key] >= 10 ? dateObject[key] : `0${dateObject[key]}`);
      
          }
      
        }
      
      
        return format;
      }
  
  }
  
  export const tool = new Tool();